package HomeWork20241124;

import java.util.Scanner;

public class HomeWork1 {
    public static void main(String[] args) {
        /*键盘录入两个数字number1和number2表示一个范围，求这个范围之内的数字和。*/
        Scanner sc = new Scanner(System.in);
        //定义两个字符串变量用于存储键盘录入的数据
        String str1;
        String str2;

        //定义两个int变量用于存储数字
        int num1 = 0;
        int num2 = 0;

        //循环判断用户输入的是否为数字
        while (true) {
            System.out.print("请输入第一个数字:");
            str1 = sc.nextLine();
            System.out.print("请输入第二个数字:");
            str2 = sc.nextLine();
            // 调用isNum方法判断是否为数字,如果是则将输入的数字转成int类型并跳出循环，否则提示用户重新输入
            if (isNum(str1) && isNum(str2)) {
                num1 = Integer.parseInt(str1);
                num2 = Integer.parseInt(str2);
                break;
            } else {
                System.out.println("输入的不是数字，请重新输入!");
            }
        }

        //判断两个数字是否相等,相等则直接输出和为本身并结束程序
        if (num1 == num2) {
            System.out.println("输入的两个数字相同,均为:" + num2 + ",所以和为:" + num1);
            return;
        }

        int result = getSum(num1, num2);
        System.out.println("两个数字的和为:" + result);
    }

    /**
     * 计算两个数字范围内的所有数字之和
     *
     * @param num1 第一个数字
     * @param num2 第二个数字
     * @return     两个数字范围内所有数字的和
     */
    public static int getSum(int num1, int num2) {
        // 定义一个变量用于存储和
        int sum = 0;
        // 根据num1和num2的大小关系,判断循环的起始和结束条件
        if (num1 < num2) {
            for (int i = num1; i <= num2; i++) {
                sum += i;
            }
        } else if (num1 > num2) {
            for (int i = num2; i <= num1; i++) {
                sum += i;
            }
        }
        return sum;
    }

    /**
     * 判断是否为数字
     * @param str  待判断的字符串
     * @return     返回是否为数字的布尔值
     */
    public static boolean isNum(String str) {
        return str.matches("\\d+");
    }

}
